package com.iwhalecloud.citybrain.flow.platform.manager.domain.repository;

import com.iwhalecloud.citybrain.flow.platform.manager.common.ResponseResult;
import com.iwhalecloud.citybrain.flow.platform.manager.domain.exception.EventCallException;
import com.iwhalecloud.citybrain.flow.platform.manager.domain.model.eventconfig.DeployedEventConfigDomain;
import com.iwhalecloud.citybrain.flow.platform.manager.domain.model.model.EventResponse;

import java.util.List;

/**
 * @author lilh
 * @date 2021/2/26 14:40
 */
public interface FlowEventConfigRepository {

    /**
     * 增加事件配置
     *
     * @param eventConfig 配置信息
     * @return 是否成功
     */
    boolean insertEventConfig(DeployedEventConfigDomain eventConfig);

    /**
     * 查询事件配置
     *
     * @param deploymentId 部署id
     * @param nodeCode     节点编码
     * @param eventType    事件类型
     * @return 配置信息
     */
    DeployedEventConfigDomain getEventConfig(String deploymentId, String nodeCode, String eventType);

    /**
     * 查询事件配置，返回所有符合要求的事件列表
     *
     * @param deploymentId 部署id
     * @param nodeCode     节点编码
     * @param eventType    事件类型
     * @return 配置信息
     */
    List<DeployedEventConfigDomain> getEventConfigList(String deploymentId, String nodeCode, String eventType);

    /**
     * 根据流modelId获取配置的事件
     * @param modelId
     * @return
     */
    List<DeployedEventConfigDomain> getEventConfigListByModelId(String modelId);

    ResponseResult<String> checkUrl(String url);

    /**
     * restful请求
     *
     * @param requestUrl
     * @param requestBody
     * @throws Exception
     */
    EventResponse restTemplateRequest(String requestUrl, String requestBody) throws EventCallException;
}
